package laMalinche;

import com.google.inject.Module;
import com.google.inject.Binder;
import com.google.inject.Scopes;
import laMalinche.rete.nodes.tailing.TailingManager;
import laMalinche.rete.nodes.tailing.BasicTailingManager;
import laMalinche.rete.nodes.tailing.WorkingMemory;
import laMalinche.rete.nodes.tailing.BasicWorkingMemory;
import laMalinche.rete.nodes.editing.EditableContextReteRoot;
import laMalinche.rete.ConditionNodeFactory;
import laMalinche.rete.Rete;
import laMalinche.constraint.ConstraintManager;
import laMalinche.constraint.ConstraintResultHolder;
import laMalinche.constraint.BasicConstraintResultHolder;

/**
 * Created by IntelliJ IDEA.
 * User: ranran
 * Date: Aug 26, 2008
 * Time: 9:03:23 PM
 * To change this template use File | Settings | File Templates.
 */
public class LaMaModule implements Module {
    public void configure(Binder binder) {
        binder.bind(TailingManager.class).to(BasicTailingManager.class);
        binder.bind(WorkingMemory.class).to(BasicWorkingMemory.class);
        binder.bind(ConstraintManager.class).to(BasicConstraintManager.class).in(Scopes.SINGLETON);
        binder.bind(ConstraintResultHolder.class).to(BasicConstraintResultHolder.class).in(Scopes.SINGLETON);
        binder.bind(ConditionNodeFactory.class).in(Scopes.SINGLETON);
        binder.bind(EditableContextReteRoot.class).in(Scopes.SINGLETON);
        binder.bind(Rete.class).to(EditableContextReteRoot.class).in(Scopes.SINGLETON);
        //To change body of implemented methods use File | Settings | File Templates.
    }
}
